<?php

class DateUtil {
	
	static public $GIORNI_SETTIMANA_DESCR = array(
	               GIORNO_LUNEDI =>  "Lunedì", 
	               GIORNO_MARTEDI =>  "Martedì", 
	               GIORNO_MERCOLEDI =>  "Mercoledì", 
	               GIORNO_GIOVEDI =>  "Giovedì", 
	               GIORNO_VENERDI =>  "Venerdì", 
	               GIORNO_SABATO =>  "Sabato", 
	               GIORNO_DOMENICA =>  "Domenica", 
	               );
	
	public static function datediff($tipo, $partenza, $fine) {
        switch ($tipo)
        {
            case "A" : $tipo = 365;
            break;
            case "M" : $tipo = (365 / 12);
            break;
            case "S" : $tipo = (365 / 52);
            break;
            case "G" : $tipo = 1;
            break;
        }
        $arr_partenza = explode("-", $partenza);
        $partenza_gg = $arr_partenza[2];
        $partenza_mm = $arr_partenza[1];
        $partenza_aa = $arr_partenza[0];
        $arr_fine = explode("-", $fine);
        $fine_gg = $arr_fine[2];
        $fine_mm = $arr_fine[1];
        $fine_aa = $arr_fine[0];
        $date_diff = mktime(12, 0, 0, $fine_mm, $fine_gg, $fine_aa) - mktime(12, 0, 0, $partenza_mm, $partenza_gg, $partenza_aa);
        $date_diff  = floor(($date_diff / 60 / 60 / 24) / $tipo);
        return $date_diff;
    }	
	
	public static function getAge($temp)
	{
	    if (empty($temp) || $temp == '0000-00-00')
	        return null;
	 
	    $temp = explode("-", $temp);
	    $oggi = explode("-", date("Y-m-d"));
	 
	    if ($oggi[1] > $temp[1])
	        return $oggi[0] - $temp[0];
	    elseif ($oggi[1] >= $temp[1] && $oggi[2] >= $temp[2])
	        return $oggi[0] - $temp[0];
	    else
	        return $oggi[0] - $temp[0] - 1;
	}
	
	public static function dateSovrapposte($dal1,$al1,$dal2,$al2) {
		if ($dal1<=$al2 && $al1>=$dal2) {
			return true;
		} else {
			//TODO verificare la possibilità di gestire le date nulle
			return false;
		}
	}
	
	public function isFestivo($giorno, $mese, $anno = 0) {
		 $feste = Array(101, 106, 425, 501, 602, 815, 1101, 1208, 1225, 1226); 
		 // SE HO PASSATO L'ANNO CONTROLLO ANCHE LA PASQUA 
		 if ($anno != 0) {
		 	 pasqua($anno, & $mPasqua, & $gPasqua); 
		 	 if ($mPasqua == $mese && $gPasqua == $giorno) 
		 	 	return (true); 
		 	 $gPasquetta = date("d", mktime(0,0,0,$mPasqua,$gPasqua + 1,$anno)); 
		 	 $mPasquetta = date("n", mktime(0,0,0,$mPasqua,$gPasqua + 1,$anno)); 
		 	 if ($mPasquetta == $mese && $gPasquetta == $giorno) 
		 	 	return (true); 
		 } 
		 $data100 = ($mese * 100) + $giorno; 
		 foreach ($feste as $festa) {
		 	 if ($festa == $data100) 
		 	 	return (true); 
		 } 
		 return false; 
	}
	
	
}

?>